import 'package:enjoy_plus/utils/toast.dart';
import 'package:flutter/material.dart';
import 'package:enjoy_plus/utils/http.dart';

class HouseDetail extends StatefulWidget {
  HouseDetail({super.key, required this.id});

  String id;

  @override
  State<HouseDetail> createState() => _HouseDetailState();
}

class _HouseDetailState extends State<HouseDetail> {
  Map _house = {};

  @override
  void initState() {
    super.initState();
    print('house id: ${widget.id}');
    getDetail();
  }

  getDetail() async {
    try {
      final res = await http.get('/room/${widget.id}');
      if (res['code'] != 10000) {
        return ToastUtil.showError('获取失败');
      }

      setState(() {
        _house = res['data'];
      });

      print(_house);
    } catch (e) {}
  }

  Widget tagBuilder(int status) {
    List tagList = [
      {},
      {
        "bgColor": const Color.fromARGB(50, 91, 177, 227),
        "textColor": const Color.fromARGB(255, 85, 145, 175),
        "title": "审核中",
      },
      {
        "bgColor": const Color.fromARGB(255, 91, 243, 91),
        "textColor": const Color.fromRGBO(1, 50, 1, 1),
        "title": "审核成功",
      },
      {
        "bgColor": const Color.fromARGB(255, 247, 129, 133),
        "textColor": const Color.fromARGB(255, 84, 1, 1),
        "title": "审核失败",
      },
    ];

    return Container(
      padding: const EdgeInsets.only(left: 5, right: 5, top: 2, bottom: 2),
      decoration: BoxDecoration(
        color: tagList[status]['bgColor'],
        borderRadius: BorderRadius.circular(5),
      ),
      child: Text(
        '${tagList[status]['title']}',
        style: TextStyle(color: tagList[status]['textColor']),
      ),
    );
  }

  showConfirmDialog(String id) {
    return showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text('温馨提示'),
          content: const Text('确定要删除该房屋吗？'),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.pop(context);
              },
              child: const Text('取消', style: TextStyle(color: Colors.red)),
            ),
            TextButton(
              onPressed: () {
                Navigator.pop(context);
                deleteHouseWithId(id);
              },
              child: const Text('确定'),
            ),
          ],
        );
      },
    );
  }

  deleteHouseWithId(String id) async {
    try {
      final res = await http.delete('/room/${id}');
      if (res['code'] != 10000) {
        return ToastUtil.showError('删除失败');
      }
      ToastUtil.showSuccess('删除成功');
      // 返回 到 / 为止
      Navigator.popUntil(context, (route) {
        print(route.settings.name);
        return route.settings.name == '/';
      });
    } catch (e) {}
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('房源详情'), centerTitle: true),
      body:
          _house.isEmpty
              ? Center(child: Text('拼命加载中...'))
              : Stack(
                alignment: Alignment.bottomCenter,
                children: [
                  ListView(
                    padding: const EdgeInsets.only(bottom: 100),
                    children: [
                      // 房屋信息
                      Container(
                        padding: const EdgeInsets.all(10),
                        child: const Text(
                          '房屋信息',
                          style: TextStyle(
                            color: Color.fromARGB(255, 97, 94, 94),
                            fontSize: 16,
                          ),
                        ),
                      ),
                      Container(
                        color: Colors.white,
                        padding: const EdgeInsets.only(
                          left: 10,
                          right: 10,
                          top: 15,
                          bottom: 15,
                        ),
                        child: Row(
                          children: [
                            Expanded(
                              child: Text(_house['point'] + _house['building']),
                            ),
                            tagBuilder(1),
                          ],
                        ),
                      ),
                      // 业主信息
                      Container(
                        padding: const EdgeInsets.all(10),
                        child: const Text(
                          '业主信息',
                          style: TextStyle(
                            color: Color.fromARGB(255, 97, 94, 94),
                            fontSize: 16,
                          ),
                        ),
                      ),
                      Container(
                        color: Colors.white,
                        padding: const EdgeInsets.only(
                          left: 10,
                          right: 10,
                          top: 15,
                          bottom: 15,
                        ),
                        child: Row(
                          children: [
                            SizedBox(
                              width: 60,
                              child: Text(_house['room'] + '室'),
                            ),
                            SizedBox(width: 30),
                            Expanded(child: Text('新康园1期')),
                          ],
                        ),
                      ),
                      Container(
                        color: Colors.white,
                        padding: const EdgeInsets.only(
                          left: 10,
                          right: 10,
                          top: 15,
                          bottom: 15,
                        ),
                        child: Row(
                          children: [
                            SizedBox(width: 60, child: Text('业主')),
                            SizedBox(width: 30),
                            Expanded(child: Text(_house['name'])),
                          ],
                        ),
                      ),
                      Container(
                        color: Colors.white,
                        padding: const EdgeInsets.only(
                          left: 10,
                          right: 10,
                          top: 15,
                          bottom: 15,
                        ),
                        child: Row(
                          children: [
                            SizedBox(width: 60, child: Text('手机号')),
                            SizedBox(width: 30),
                            Expanded(child: Text(_house['mobile'])),
                          ],
                        ),
                      ),
                      const SizedBox(height: 30),
                      Container(
                        padding: const EdgeInsets.all(10),
                        color: Colors.white,
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            const Text('本人身份证照片'),
                            Image.network(
                              _house['idcardFrontUrl'],
                              height: 200,
                            ),
                            Image.network(_house['idcardBackUrl'], height: 200),
                          ],
                        ),
                      ),
                    ],
                  ),
                  Container(
                    padding: const EdgeInsets.all(10),
                    width: MediaQuery.of(context).size.width,
                    height: 80,
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                      children: [
                        ElevatedButton(
                          onPressed: () {
                            showConfirmDialog(widget.id);
                          },
                          child: const Column(
                            children: [
                              SizedBox(height: 8, width: 120),
                              Icon(Icons.delete),
                              Text('删除房屋'),
                              SizedBox(height: 8),
                            ],
                          ),
                        ),
                        ElevatedButton(
                          onPressed: () {
                            // 携带所有数据去详情
                            Navigator.pushNamed(
                              context,
                              '/house_form',
                              arguments: _house,
                            );
                          },
                          child: const Column(
                            children: [
                              SizedBox(height: 8, width: 120),
                              Icon(Icons.edit),
                              Text('修改房屋'),
                              SizedBox(height: 8),
                            ],
                          ),
                        ),
                      ],
                    ),
                  ),
                ],
              ),
    );
  }
}
